//1.导入
let mongoose = require('mongoose');
var Schema = mongoose.Schema;

//2.连接数据库
//指定连接的数据库不需要存在，当你插入第一条数据后，就会自动创建
mongoose.connect('mongodb://localhost/itcast');

//3.设计集合结构(表结构)
var userSchema = new Schema({
	username: {
		type: String,
		required: true, //必须有
	},
	password: {
		type: String,
		required: true,
	},
	email: String,
});

// 4.将设计集合发布为模型
// mongoose.model 方法用来将一个架构发布为 model
// 第一个参数：传入一个大写的名词单数字符串，表示集合名称
//           mongoose 会自动将大写名词单数字符串，生成一个小写名词复数的集合名称
//    User---users
// 返回一个模型构造函数
var User = mongoose.model('User', userSchema);

//5.使用构造函数集合，对数据进行 CRUD
// var admin = new User({
// 	username: '张三',
// 	password: '1234456',
// 	email: 'admin@admin.com',
// });

//6.存储到 mongodb 数据库相应的集合

/**
 * 新增
 */
// admin
// 	.save()
// 	.then((ret) => {
// 		console.log('保存成功');
// 		console.log(ret);
// 	})
// 	.catch((err) => {
// 		console.log('保存失败');
// 		console.log(err);
// 	});
// admin.save(function (err, ret) {
// 	if (err) {
// 		console.log('保存失败');
// 	} else {
// 		console.log('保存成功');
// 		console.log(ret);
// 	}
// });

/**
 * 查询所有
 */
User.find(function (err, ret) {
	if (err) {
		console.log('查询失败');
	}
	console.log(ret);
});

/**
 * 查询单个
 */
// User.find({ username: '张三' }, function (err, ret) {
// 	if (err) {
// 		console.log('查询失败');
// 	}
// 	console.log(ret);
// });

/**
 * 删除数据
 */
// User.remove({ username: '张三' }, function (err, ret) {
// 	if (err) {
// 		console.log('删除失败');
// 	}
// 	console.log('删除成功');
// 	console.log(ret);
// });

/**
 * 更新数据
 */
// User.updateOne(
// 	{ _id: '5eeb71c1e6f7010dc180cfe1' },
// 	{ username: '张三' },
// 	function (err, ret) {
// 		if (err) {
// 			console.log('更新失败');
// 		} else {
// 			console.log('更新成功');
// 			console.log(ret);
// 		}
// 	}
// );
